MATLAB中griddata和griddatan插值函数简单说明 您所在的位置:网站首页 matlab griddata 插值 MATLAB中griddata和griddatan插值函数简单说明

MATLAB中griddata和griddatan插值函数简单说明

2023-03-13 19:13| 来源: 网络整理| 查看: 265

MATLAB中griddata和griddatan插值函数简单说明

前言

本文会用容易理解的话解释下griddata和griddatan的用法,不会追求严谨,目的是帮助需要用到这两个插值函数的尽快理解使用。

一、griddata函数是什么?

griddata可以插入二维或三维散点数据 严格上来说,griddata并不能算是插值,但是可以实现插值的功能。griddata有以下三种形式: vq = griddata(x,y,v,xq,yq) vq = griddata(x,y,z,v,xq,yq,zq) vq = griddata(___,method) griddata和interp2的区别是,interp2的插值数据必须是矩形域,要求xy规则排列。griddata中x,y,v是包含分散(非均匀)样本点和数据的向量。 举个例子,现在我在野外有5x5矩阵共25个采样点,分别覆盖了经度121-125度,纬度30-34.5度之间,采样点采集的是农作物的亩产量数据。现在我有一个经度122-124度,纬度32-34度之间的20x20的矩阵,矩阵代表每个点有多少亩这种农作物,现在需要求矩阵范围内的总产量。 下面两图分别代表采样点分布和绘制的亩产量等值线图

那么问题来了,25个采样点的数据实在太稀疏了,截取范围后,根本无法与20x20的矩阵点乘求总产量,那么这个时候就需要用到griddata函数了。 x,y可以看做是大的采样范围,v是每个点的属性,比如亩产量,某一污染物浓度。xq,yq是在这个采样范围内,需要截取的范围,比如我在一个省随即采了好多样本点,但我需要计算省内某块区域的值,这个时候就可以对全省采样数据插值,截取想要的区域,并可以调整xy间隔,构成新的矩阵。 当然,最关键的一点来了,如果这25个数据不构成5x5矩阵怎么办,比如我只有空间分布的21个数据?

上面说到interp2的插值数据必须是矩形域,gridata可以是分散(非均匀)样本点,所以依然适用这种情况。 下面的代码是用原始经纬度、亩产量是用矩阵表示的。当原始数据不是矩形域时,可以采用Excel表的形式输入MATLAB里面进行运算。

1234567891011121314151617181920212223x=[ 34.2,34,34,34,34;     33,33.2,33,33,33;     32,32.7,32.5,32.6,32;     31.5,31,31,31,31;     30,30,30,30,30];   y=[ 121,122,123,124,125;     121,122.1,123,124,125;     121.3,122,123,124,125;     121,122,123,124,125;     121.1,122.3,123.6,124,125]; z=[ 1,2,5,3,4;     4,2,3,5,6;     7,5,3,6,4;     4,2,8,6,4;     7,4,8,6,5]; %为了便于理解,将原始数据详细写了出来 contourf(y,x,z) figure() xrange=34:-0.1:32; yrange=122:0.1:124; [Y,X] = meshgrid(yrange,xrange);%xrange、yrange可以看做是截取的范围,插值并且将其改为20*20的矩阵 M =griddata(x,y,z,X,Y); imagesc(M)%20*20新的矩阵

二、gridatan使用

gridatan和gridata用法类似,不同的还是,gridatan可以实现更高维度的插值。 比如我选择一个湖泊,在湖泊选了几十个不同位置采样点,每一个采样点又根据水深采了不同深度的水样,计算营养盐含量。 采样点x,y,z实际上分布在三维空间中,且不均匀分布,加上营养盐含量就成了四维分散数据。这个时候想看某一经度的截面营养盐分布,gridatan就可以帮助我们实现对整个湖泊营养盐的插值,实现这一目的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有